#include "UnitTypes.h"

#include "UpgradeTypes.h"

#include <Util/Foreach.h>

#include <BWDI\UnitType.h>
#include <BWDI\UnitTypeID.h>
#include <BWDI\WeaponTypeID.h>
#include <BWDI\UnitSizeTypeID.h>
#include <BWDI\TechTypeID.h>
#include <BWDI\UpgradeTypeID.h>
#include <BWDI\RaceID.h>


namespace BWDI
{
  namespace UnitTypes
  {
    UnitTypeInternal unitTypeData[UnitTypeIDs::count];
    std::map<std::string, UnitTypeID> unitTypeMap;
    std::set< UnitTypeID > unitTypeSet;

    void fillUnitType(UnitTypeID id, const char* name, const char* subLabel, RaceID race, UnitTypeID whatBuilds, int whatBuildsAmt, int requiredUnit1, int requiredUnit1Amt, int requiredUnit2, int requiredUnit2Amt, int requiredUnit3, int requiredUnit3Amt, TechTypeID requiredTech, int ability1, int ability2, int ability3, int ability4, UpgradeTypeID armorUpgrade, int maxHitPoints, int maxShields, int maxEnergy, int armor, int mineralPrice, int gasPrice, int buildTime, int supplyRequired, int supplyProvided, int spaceRequired, int spaceProvided, int buildScore, int destroyScore, UnitSizeTypeID unitSizeType, int tileWidth, int tileHeight, int dimensionLeft, int dimensionUp, int dimensionRight, int dimensionDown,  int seekRange, int sightRange, WeaponTypeID groundWeapon, int maxGroundHits, WeaponTypeID airWeapon, int maxAirHits, double topSpeed, int acceleration, int haltDistance, int turnRadius, bool canProduce, bool canAttack, bool canMove, bool isFlyer, bool regeneratesHP, bool isSpellcaster,  bool hasPermanentCloak, bool isInvincible, bool isOrganic, bool isMechanical, bool isRobotic, bool isDetector, bool isResourceContainer, bool isResourceDepot, bool isWorker, bool requiresPsi, bool requiresCreep, bool isTwoUnitsInOneEgg, bool isBurrowable, bool isCloakable, bool isBuilding, bool isAddon, bool isFlyingBuilding, bool isNeutral, bool isRefinery)
    {
      UnitTypeInternal &target = unitTypeData[id];
      target.name.set(name);
      target.subLabel.set(subLabel);
      target.race = race;

      target.whatBuilds.unitType = whatBuilds;
      target.whatBuilds.count = whatBuildsAmt;

      if ((UnitTypeID)requiredUnit1 != UnitTypeIDs::None)
      {
        target.requiredUnits.insert(std::make_pair((UnitTypeID)requiredUnit1, requiredUnit1Amt));
      }
      if ((UnitTypeID)requiredUnit2 != UnitTypeIDs::None)
      {
        target.requiredUnits.insert(std::make_pair((UnitTypeID)requiredUnit2, requiredUnit2Amt));
      }
      if ((UnitTypeID)requiredUnit3 != UnitTypeIDs::None)
      {
        target.requiredUnits.insert(std::make_pair((UnitTypeID)requiredUnit3, requiredUnit3Amt));
      }
      target.requiredTech = requiredTech;
      if ((TechTypeID)ability1 != TechTypeIDs::None)
      {
        target.abilities.insert((TechTypeID)ability1);
      }
      if ((TechTypeID)ability2 != TechTypeIDs::None)
      {
        target.abilities.insert((TechTypeID)ability2);
      }
      if ((TechTypeID)ability3 != TechTypeIDs::None)
      {
        target.abilities.insert((TechTypeID)ability3);
      }
      if ((TechTypeID)ability4 != TechTypeIDs::None)
      {
        target.abilities.insert((TechTypeID)ability4);
      }
      target.armorUpgrade = armorUpgrade;

      target.maxHitPoints = maxHitPoints;
      target.maxShields = maxShields;
      target.maxEnergy = maxEnergy;
      target.armor = armor;

      target.mineralPrice = mineralPrice;
      target.gasPrice = gasPrice;
      target.buildTime = buildTime;

      target.supplyRequired = supplyRequired;
      target.supplyProvided = supplyProvided;
      target.spaceRequired = spaceRequired;
      target.spaceProvided = spaceProvided;
      target.buildScore = buildScore;
      target.destroyScore = destroyScore;

      target.unitSizeType = unitSizeType;
      target.tileWidth = tileWidth;
      target.tileHeight = tileHeight;
      target.dimensionLeft = dimensionLeft;
      target.dimensionUp = dimensionUp;
      target.dimensionRight = dimensionRight;
      target.dimensionDown = dimensionDown;

      target.seekRange = seekRange;
      target.sightRange = sightRange;
      target.groundWeapon = groundWeapon;
      target.maxGroundHits = maxGroundHits;
      target.airWeapon = airWeapon;
      target.maxAirHits = maxAirHits;

      target.topSpeed = topSpeed;
      target.acceleration = acceleration;
      target.haltDistance = haltDistance;
      target.turnRadius = turnRadius;

      target.canProduce = canProduce;
      target.canAttack = canAttack;
      target.canMove = canMove;

      target.isFlyer = isFlyer;
      target.regeneratesHP = regeneratesHP;
      target.isSpellcaster = isSpellcaster;
      target.hasPermanentCloak = hasPermanentCloak;
      target.isInvincible = isInvincible;
      target.isOrganic = isOrganic;
      target.isMechanical = isMechanical;
      target.isRobotic = isRobotic;
      target.isDetector = isDetector;
      target.isResourceContainer = isResourceContainer;
      target.isResourceDepot = isResourceDepot;
      target.isWorker = isWorker;
      target.requiresPsi = requiresPsi;
      target.requiresCreep = requiresCreep;
      target.isTwoUnitsInOneEgg = isTwoUnitsInOneEgg;
      target.isBurrowable = isBurrowable;
      target.isCloakable = isCloakable;
      target.isBuilding = isBuilding;
      target.isAddon = isAddon;
      target.isFlyingBuilding = isFlyingBuilding;
      target.isNeutral = isNeutral;
      target.isRefinery = isRefinery;

      target.valid = true;
    }
    void init()
    {
      static bool runOnce = false;
      if(runOnce)
        return;
      runOnce = true;

      fillUnitType(UnitTypeIDs::Terran_Marine, "Terran Marine", "Private", RaceIDs::Terran, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Barracks, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Stim_Packs, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Infantry_Armor, 40, 0, 0, 0, 50, 0, 360, 2, 0, 1, 0, 50, 100, UnitSizeTypeIDs::Small, 1, 1, 8, 9, 8, 10, 128, 224, WeaponTypeIDs::Gauss_Rifle, 1, WeaponTypeIDs::Gauss_Rifle, 1, 4, 1, 1, 40, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Ghost, "Terran Ghost", "Specialist", RaceIDs::Terran, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Academy, 1, UnitTypeIDs::Terran_Covert_Ops, 1, TechTypeIDs::None, TechTypeIDs::Lockdown, TechTypeIDs::Personnel_Cloaking, TechTypeIDs::Nuclear_Strike, TechTypeIDs::None, UpgradeTypeIDs::Terran_Infantry_Armor, 45, 0, 200, 0, 25, 75, 750, 2, 0, 1, 0, 175, 350, UnitSizeTypeIDs::Small, 1, 1, 7, 10, 7, 11, 224, 288, WeaponTypeIDs::C_10_Canister_Rifle, 1, WeaponTypeIDs::C_10_Canister_Rifle, 1, 4, 1, 1, 40, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Vulture, "Terran Vulture", "Sergeant", RaceIDs::Terran, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Factory, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Spider_Mines, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Vehicle_Plating, 80, 0, 0, 0, 75, 0, 450, 4, 0, 2, 0, 75, 150, UnitSizeTypeIDs::Medium, 1, 1, 16, 16, 15, 15, 160, 256, WeaponTypeIDs::Fragmentation_Grenade, 1, WeaponTypeIDs::None, 0, 6.4, 100, 14569, 40, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Goliath, "Terran Goliath", "First Sergeant", RaceIDs::Terran, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Armory, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Vehicle_Plating, 125, 0, 0, 1, 100, 50, 600, 4, 0, 2, 0, 200, 400, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 192, 256, WeaponTypeIDs::Twin_Autocannons, 0, WeaponTypeIDs::Hellfire_Missile_Pack, 0, 4.57, 1, 1, 17, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Siege_Tank_Tank_Mode, "Terran Siege Tank Tank Mode", "Master Sergeant", RaceIDs::Terran, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Machine_Shop, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Tank_Siege_Mode, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Vehicle_Plating, 150, 0, 0, 1, 150, 100, 750, 4, 0, 4, 0, 350, 700, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 256, 320, WeaponTypeIDs::Arclite_Cannon, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 13, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_SCV, "Terran SCV", "Private", RaceIDs::Terran, UnitTypeIDs::Terran_Command_Center, 1, UnitTypeIDs::Terran_Command_Center, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Infantry_Armor, 60, 0, 0, 0, 50, 0, 300, 2, 0, 1, 0, 50, 100, UnitSizeTypeIDs::Small, 1, 1, 11, 11, 11, 11, 32, 224, WeaponTypeIDs::Fusion_Cutter, 1, WeaponTypeIDs::None, 0, 4.923, 67, 12227, 40, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Wraith, "Terran Wraith", "Captain", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Cloaking_Field, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Ship_Plating, 120, 0, 200, 0, 150, 100, 900, 4, 0, 255, 0, 400, 800, UnitSizeTypeIDs::Large, 1, 1, 19, 15, 18, 14, 160, 224, WeaponTypeIDs::Burst_Lasers, 1, WeaponTypeIDs::Gemini_Missiles, 1, 6.668, 67, 21745, 40, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Science_Vessel, "Terran Science Vessel", "Major", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Control_Tower, 1, UnitTypeIDs::Terran_Science_Facility, 1, TechTypeIDs::None, TechTypeIDs::EMP_Shockwave, TechTypeIDs::Defensive_Matrix, TechTypeIDs::Irradiate, TechTypeIDs::None, UpgradeTypeIDs::Terran_Ship_Plating, 200, 0, 200, 1, 100, 225, 1200, 4, 0, 255, 0, 625, 1250, UnitSizeTypeIDs::Large, 2, 2, 32, 33, 32, 16, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 5, 50, 5120, 40, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Dropship, "Terran Dropship", "Warrant Officer", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Control_Tower, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Ship_Plating, 150, 0, 0, 1, 100, 100, 750, 4, 0, 255, 8, 300, 600, UnitSizeTypeIDs::Large, 2, 2, 24, 16, 24, 20, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 5.469, 17, 37756, 20, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Battlecruiser, "Terran Battlecruiser", "Commodore", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Control_Tower, 1, UnitTypeIDs::Terran_Physics_Lab, 1, TechTypeIDs::None, TechTypeIDs::Yamato_Gun, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Ship_Plating, 500, 0, 200, 3, 400, 300, 2000, 12, 0, 255, 0, 1200, 2400, UnitSizeTypeIDs::Large, 2, 2, 37, 29, 37, 29, 192, 352, WeaponTypeIDs::ATS_Laser_Battery, 1, WeaponTypeIDs::ATA_Laser_Battery, 1, 2.5, 27, 7585, 20, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Vulture_Spider_Mine, "Terran Vulture Spider Mine", "", RaceIDs::Terran, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 20, 0, 0, 0, 1, 0, 1, 0, 0, 255, 0, 0, 25, UnitSizeTypeIDs::Small, 1, 1, 7, 7, 7, 7, 96, 96, WeaponTypeIDs::Spider_Mines, 1, WeaponTypeIDs::None, 0, 16, 1, 1, 127, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Nuclear_Missile, "Terran Nuclear Missile", "", RaceIDs::Terran, UnitTypeIDs::Terran_Nuclear_Silo, 1, UnitTypeIDs::Terran_Nuclear_Silo, 1, UnitTypeIDs::Terran_Command_Center, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 100, 0, 0, 0, 200, 200, 1500, 16, 0, 255, 0, 800, 0, UnitSizeTypeIDs::Independent, 1, 1, 7, 14, 7, 14, 0, 96, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 33.332, 33, 1103213, 127, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Siege_Tank_Siege_Mode, "Terran Siege Tank Siege Mode", "Master Sergeant", RaceIDs::Terran, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Machine_Shop, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Tank_Siege_Mode, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Vehicle_Plating, 150, 0, 0, 1, 150, 100, 750, 4, 0, 255, 0, 0, 700, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 384, 320, WeaponTypeIDs::Arclite_Shock_Cannon, 0, WeaponTypeIDs::None, 0, 0, 1, 1, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Firebat, "Terran Firebat", "Corporal", RaceIDs::Terran, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Academy, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Stim_Packs, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Infantry_Armor, 50, 0, 0, 1, 50, 25, 360, 2, 0, 1, 0, 100, 200, UnitSizeTypeIDs::Small, 1, 1, 11, 7, 11, 14, 96, 224, WeaponTypeIDs::Flame_Thrower, 3, WeaponTypeIDs::None, 0, 4, 1, 1, 40, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Spell_Scanner_Sweep, "Spell Scanner Sweep", "", RaceIDs::Terran, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 0, 0, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 0, UnitSizeTypeIDs::Independent, 1, 1, 13, 13, 13, 17, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Medic, "Terran Medic", "1st Lieutenant", RaceIDs::Terran, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Barracks, 1, UnitTypeIDs::Terran_Academy, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Restoration, TechTypeIDs::Optical_Flare, TechTypeIDs::Healing, TechTypeIDs::None, UpgradeTypeIDs::Terran_Infantry_Armor, 60, 0, 200, 1, 50, 25, 450, 2, 0, 1, 0, 125, 250, UnitSizeTypeIDs::Small, 1, 1, 8, 9, 8, 10, 288, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 40, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Larva, "Zerg Larva", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Hatchery, 1, UnitTypeIDs::Zerg_Hatchery, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 25, 0, 0, 10, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 8, 8, 7, 7, 0, 128, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 1, 1, 20, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Egg, "Zerg Egg", "Private", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 200, 0, 0, 10, 1, 1, 1, 0, 0, 255, 0, 0, 25, UnitSizeTypeIDs::Medium, 1, 1, 16, 16, 15, 15, 0, 128, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Zergling, "Zerg Zergling", "Specialist", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Spawning_Pool, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Burrowing, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 35, 0, 0, 0, 50, 0, 420, 1, 0, 1, 0, 25, 50, UnitSizeTypeIDs::Small, 1, 1, 8, 4, 7, 11, 96, 160, WeaponTypeIDs::Claws, 1, WeaponTypeIDs::None, 0, 5.486, 1, 1, 27, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Hydralisk, "Zerg Hydralisk", "Warrant Officer", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Hydralisk_Den, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Burrowing, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 80, 0, 0, 0, 75, 25, 420, 2, 0, 2, 0, 125, 350, UnitSizeTypeIDs::Medium, 1, 1, 10, 10, 10, 12, 128, 192, WeaponTypeIDs::Needle_Spines, 1, WeaponTypeIDs::Needle_Spines, 1, 3.656, 1, 1, 27, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Ultralisk, "Zerg Ultralisk", "Colonel", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Ultralisk_Cavern, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 400, 0, 0, 1, 200, 200, 900, 8, 0, 4, 0, 650, 1300, UnitSizeTypeIDs::Large, 2, 2, 19, 16, 18, 15, 96, 224, WeaponTypeIDs::Kaiser_Blades, 1, WeaponTypeIDs::None, 0, 5.12, 1, 1, 40, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Broodling, "Zerg Broodling", "1st Lieutenant", RaceIDs::Zerg, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 30, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 25, UnitSizeTypeIDs::Small, 1, 1, 9, 9, 9, 9, 96, 160, WeaponTypeIDs::Toxic_Spores, 1, WeaponTypeIDs::None, 0, 6, 1, 1, 27, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Drone, "Zerg Drone", "Corporal", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Burrowing, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 40, 0, 0, 0, 50, 0, 300, 2, 0, 1, 0, 50, 100, UnitSizeTypeIDs::Small, 1, 1, 11, 11, 11, 11, 32, 224, WeaponTypeIDs::Spines, 1, WeaponTypeIDs::None, 0, 4.923, 67, 12227, 40, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Overlord, "Zerg Overlord", "Master Sergeant", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Flyer_Carapace, 200, 0, 0, 0, 100, 0, 600, 0, 16, 255, 8, 100, 200, UnitSizeTypeIDs::Large, 2, 2, 25, 25, 24, 24, 0, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0.832, 27, 840, 20, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Mutalisk, "Zerg Mutalisk", "Captain", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Flyer_Carapace, 120, 0, 0, 0, 100, 100, 600, 4, 0, 255, 0, 300, 600, UnitSizeTypeIDs::Small, 2, 2, 22, 22, 21, 21, 96, 224, WeaponTypeIDs::Glave_Wurm, 1, WeaponTypeIDs::Glave_Wurm, 1, 6.667, 67, 21745, 40, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Guardian, "Zerg Guardian", "Major", RaceIDs::Zerg, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Greater_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Flyer_Carapace, 150, 0, 0, 2, 50, 100, 600, 4, 0, 255, 0, 550, 1100, UnitSizeTypeIDs::Large, 2, 2, 22, 22, 21, 21, 256, 352, WeaponTypeIDs::Acid_Spore, 1, WeaponTypeIDs::None, 0, 2.5, 27, 7585, 20, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Queen, "Zerg Queen", "Sergeant Major", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Queens_Nest, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Infestation, TechTypeIDs::Spawn_Broodlings, TechTypeIDs::Ensnare, TechTypeIDs::Parasite, UpgradeTypeIDs::Zerg_Flyer_Carapace, 120, 0, 200, 0, 100, 100, 750, 4, 0, 255, 0, 400, 800, UnitSizeTypeIDs::Medium, 2, 2, 24, 24, 23, 23, 256, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 6.667, 67, 21745, 40, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Defiler, "Zerg Defiler", "First Sergeant", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Defiler_Mound, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Burrowing, TechTypeIDs::Dark_Swarm, TechTypeIDs::Plague, TechTypeIDs::Consume, UpgradeTypeIDs::Zerg_Carapace, 80, 0, 200, 1, 50, 150, 750, 4, 0, 2, 0, 225, 450, UnitSizeTypeIDs::Medium, 1, 1, 13, 12, 13, 12, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Scourge, "Zerg Scourge", "Sergeant", RaceIDs::Zerg, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Larva, 1, UnitTypeIDs::Zerg_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Flyer_Carapace, 25, 0, 0, 0, 25, 75, 450, 1, 0, 255, 0, 100, 200, UnitSizeTypeIDs::Small, 1, 1, 12, 12, 11, 11, 96, 160, WeaponTypeIDs::None, 0, WeaponTypeIDs::Suicide_Scourge, 1, 6.668, 107, 13616, 40, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Infested_Terran, "Zerg Infested Terran", "First Sergeant", RaceIDs::Zerg, UnitTypeIDs::Zerg_Infested_Command_Center, 1, UnitTypeIDs::Zerg_Infested_Command_Center, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 60, 0, 0, 0, 100, 50, 600, 2, 0, 1, 0, 200, 400, UnitSizeTypeIDs::Small, 1, 1, 8, 9, 8, 10, 96, 160, WeaponTypeIDs::Suicide_Infested_Terran, 1, WeaponTypeIDs::None, 0, 5.818, 1, 1, 40, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Valkyrie, "Terran Valkyrie", "Lt Commander", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Control_Tower, 1, UnitTypeIDs::Terran_Armory, 1, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Terran_Ship_Plating, 200, 0, 0, 2, 250, 125, 750, 6, 0, 255, 0, 400, 800, UnitSizeTypeIDs::Large, 2, 2, 24, 16, 24, 20, 192, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::Halo_Rockets, 4, 6.602, 65, 21901, 30, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Cocoon, "Zerg Cocoon", "Private", RaceIDs::Zerg, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Greater_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 200, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 1100, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 0, 128, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Corsair, "Protoss Corsair", "Master Sergeant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Stargate, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Disruption_Web, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 100, 80, 200, 1, 150, 100, 600, 4, 0, 255, 0, 350, 700, UnitSizeTypeIDs::Medium, 1, 1, 18, 16, 17, 15, 288, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::Neutron_Flare, 1, 6.668, 67, 17067, 30, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Dark_Templar, "Protoss Dark Templar", "First Sergeant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Templar_Archives, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Dark_Archon_Meld, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 80, 40, 0, 1, 125, 100, 750, 4, 0, 2, 0, 325, 650, UnitSizeTypeIDs::Small, 1, 1, 12, 6, 11, 19, 96, 224, WeaponTypeIDs::Warp_Blades, 1, WeaponTypeIDs::None, 0, 4.923, 27, 13474, 40, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Devourer, "Zerg Devourer", "First Sergeant", RaceIDs::Zerg, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Mutalisk, 1, UnitTypeIDs::Zerg_Greater_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Flyer_Carapace, 250, 0, 0, 2, 150, 50, 600, 4, 0, 255, 0, 550, 1100, UnitSizeTypeIDs::Large, 2, 2, 22, 22, 21, 21, 224, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::Corrosive_Acid, 1, 5, 48, 17067, 30, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Dark_Archon, "Protoss Dark Archon", "Warrant Officer", RaceIDs::Protoss, UnitTypeIDs::Protoss_Dark_Templar, 2, UnitTypeIDs::Protoss_Dark_Templar, 2, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::Mind_Control, TechTypeIDs::Feedback, TechTypeIDs::Maelstrom, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 25, 200, 200, 1, 0, 0, 300, 8, 0, 4, 0, 650, 1300, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 224, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4.923, 160, 5120, 40, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Probe, "Protoss Probe", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Nexus, 1, UnitTypeIDs::Protoss_Nexus, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 20, 20, 0, 0, 50, 0, 300, 2, 0, 1, 0, 50, 100, UnitSizeTypeIDs::Small, 1, 1, 11, 11, 11, 11, 32, 256, WeaponTypeIDs::Particle_Beam, 1, WeaponTypeIDs::None, 0, 4.923, 67, 12227, 40, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Zealot, "Protoss Zealot", "1st Lieutenant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Gateway, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 100, 60, 0, 1, 100, 0, 600, 4, 0, 2, 0, 100, 200, UnitSizeTypeIDs::Small, 1, 1, 11, 5, 11, 13, 96, 224, WeaponTypeIDs::Psi_Blades, 2, WeaponTypeIDs::None, 0, 4, 1, 1, 40, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Dragoon, "Protoss Dragoon", "Corporal", RaceIDs::Protoss, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Cybernetics_Core, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 100, 80, 0, 1, 125, 50, 750, 4, 0, 4, 0, 250, 500, UnitSizeTypeIDs::Large, 1, 1, 15, 15, 16, 16, 128, 256, WeaponTypeIDs::Phase_Disruptor, 1, WeaponTypeIDs::Phase_Disruptor, 1, 5, 1, 1, 40, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_High_Templar, "Protoss High Templar", "Sergeant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Gateway, 1, UnitTypeIDs::Protoss_Templar_Archives, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Psionic_Storm, TechTypeIDs::Hallucination, TechTypeIDs::Archon_Warp, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 40, 40, 200, 0, 50, 150, 750, 4, 0, 2, 0, 350, 700, UnitSizeTypeIDs::Small, 1, 1, 12, 10, 11, 13, 96, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 3.2, 27, 13474, 40, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Archon, "Protoss Archon", "Warrant Officer", RaceIDs::Protoss, UnitTypeIDs::Protoss_High_Templar, 2, UnitTypeIDs::Protoss_High_Templar, 2, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 10, 350, 0, 0, 0, 0, 300, 8, 0, 4, 0, 700, 1400, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 96, 256, WeaponTypeIDs::Psionic_Shockwave, 1, WeaponTypeIDs::Psionic_Shockwave, 1, 4.923, 160, 5120, 40, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Shuttle, "Protoss Shuttle", "First Sergeant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Robotics_Facility, 1, UnitTypeIDs::Protoss_Robotics_Facility, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 80, 60, 0, 1, 200, 0, 900, 4, 0, 255, 8, 200, 400, UnitSizeTypeIDs::Large, 2, 1, 20, 16, 19, 15, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4.425, 17, 37756, 20, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Scout, "Protoss Scout", "Master Sergeant", RaceIDs::Protoss, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Stargate, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 150, 100, 0, 0, 275, 125, 1200, 6, 0, 255, 0, 650, 1300, UnitSizeTypeIDs::Large, 2, 1, 18, 16, 17, 15, 128, 256, WeaponTypeIDs::Dual_Photon_Blasters, 1, WeaponTypeIDs::Anti_Matter_Missiles, 1, 5, 48, 17067, 30, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Arbiter, "Protoss Arbiter", "Captain", RaceIDs::Protoss, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Arbiter_Tribunal, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Recall, TechTypeIDs::Stasis_Field, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 200, 150, 200, 1, 100, 350, 2400, 8, 0, 255, 0, 1025, 2050, UnitSizeTypeIDs::Large, 2, 2, 22, 22, 21, 21, 160, 288, WeaponTypeIDs::Phase_Disruptor_Cannon, 1, WeaponTypeIDs::Phase_Disruptor_Cannon, 1, 5, 33, 24824, 40, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Carrier, "Protoss Carrier", "Major", RaceIDs::Protoss, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Stargate, 1, UnitTypeIDs::Protoss_Fleet_Beacon, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 300, 150, 0, 4, 350, 250, 2100, 12, 0, 255, 0, 950, 1900, UnitSizeTypeIDs::Large, 2, 2, 32, 32, 31, 31, 256, 352, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 3.332, 27, 13474, 20, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Interceptor, "Protoss Interceptor", "Private", RaceIDs::Protoss, UnitTypeIDs::Protoss_Carrier, 1, UnitTypeIDs::Protoss_Carrier, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 40, 40, 0, 0, 25, 0, 300, 0, 0, 255, 0, 30, 60, UnitSizeTypeIDs::Small, 1, 1, 8, 8, 7, 7, 128, 192, WeaponTypeIDs::Pulse_Cannon, 1, WeaponTypeIDs::Pulse_Cannon, 1, 13.332, 427, 13640, 40, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Reaver, "Protoss Reaver", "Specialist", RaceIDs::Protoss, UnitTypeIDs::Protoss_Robotics_Facility, 1, UnitTypeIDs::Protoss_Robotics_Facility, 1, UnitTypeIDs::Protoss_Robotics_Support_Bay, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 100, 80, 0, 0, 200, 100, 1050, 8, 0, 4, 0, 400, 800, UnitSizeTypeIDs::Large, 1, 1, 16, 16, 15, 15, 256, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1.777, 1, 1, 20, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Observer, "Protoss Observer", "Private", RaceIDs::Protoss, UnitTypeIDs::Protoss_Robotics_Facility, 1, UnitTypeIDs::Protoss_Robotics_Facility, 1, UnitTypeIDs::Protoss_Observatory, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Plating, 40, 20, 0, 0, 25, 75, 600, 2, 0, 255, 0, 225, 450, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 3.332, 27, 13474, 20, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Scarab, "Protoss Scarab", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Reaver, 1, UnitTypeIDs::Protoss_Reaver, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Protoss_Armor, 20, 10, 0, 0, 15, 0, 105, 0, 0, 255, 0, 0, 0, UnitSizeTypeIDs::Small, 1, 1, 2, 2, 2, 2, 128, 160, WeaponTypeIDs::Scarab, 1, WeaponTypeIDs::None, 0, 16, 1, 1, 27, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Critter_Rhynadon, "Critter Rhynadon", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Critter_Bengalaas, "Critter Bengalaas", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Critter_Scantid, "Critter Scantid", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Critter_Kakaru, "Critter Kakaru", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 5, 16, 51200, 14, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Critter_Ragnasaur, "Critter Ragnasaur", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Critter_Ursadon, "Critter Ursadon", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 60, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 0, 10, UnitSizeTypeIDs::Small, 1, 1, 16, 16, 15, 15, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 4, 1, 1, 27, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Zerg_Lurker_Egg, "Zerg Lurker Egg", "Private", RaceIDs::Zerg, UnitTypeIDs::Zerg_Hydralisk, 1, UnitTypeIDs::Zerg_Hydralisk, 1, NULL, 0, NULL, 0, TechTypeIDs::Lurker_Aspect, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 200, 0, 0, 10, 1, 1, 1, 0, 0, 255, 0, 0, 500, UnitSizeTypeIDs::Medium, 1, 1, 16, 16, 15, 15, 0, 128, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Lurker, "Zerg Lurker", "Captain", RaceIDs::Zerg, UnitTypeIDs::Zerg_Hydralisk, 1, UnitTypeIDs::Zerg_Hydralisk, 1, NULL, 0, NULL, 0, TechTypeIDs::Lurker_Aspect, TechTypeIDs::Lurker_Aspect, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::Zerg_Carapace, 125, 0, 0, 1, 50, 100, 600, 4, 0, 4, 0, 250, 500, UnitSizeTypeIDs::Medium, 1, 1, 15, 15, 16, 16, 192, 256, WeaponTypeIDs::Subterranean_Spines, 1, WeaponTypeIDs::None, 0, 5.818, 1, 1, 40, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Spell_Disruption_Web, "Spell Disruption Web", "", RaceIDs::Protoss, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 800, 0, 0, 0, 250, 250, 2400, 0, 0, 255, 0, 0, 0, UnitSizeTypeIDs::Independent, 4, 3, 60, 40, 59, 39, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Terran_Command_Center, "Terran Command Center", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1500, 0, 0, 1, 400, 0, 1800, 0, 20, 255, 0, 400, 1200, UnitSizeTypeIDs::Large, 4, 3, 58, 41, 58, 41, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Comsat_Station, "Terran Comsat Station", "", RaceIDs::Terran, UnitTypeIDs::Terran_Command_Center, 1, UnitTypeIDs::Terran_Command_Center, 1, UnitTypeIDs::Terran_Academy, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::Scanner_Sweep, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 0, 200, 1, 50, 50, 600, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 37, 16, 31, 25, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Nuclear_Silo, "Terran Nuclear Silo", "", RaceIDs::Terran, UnitTypeIDs::Terran_Command_Center, 1, UnitTypeIDs::Terran_Command_Center, 1, UnitTypeIDs::Terran_Science_Facility, 1, UnitTypeIDs::Terran_Covert_Ops, 1, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 0, 0, 1, 100, 100, 1200, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 37, 16, 31, 25, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Supply_Depot, "Terran Supply Depot", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 0, 0, 1, 100, 0, 600, 0, 16, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 3, 2, 38, 22, 38, 26, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Refinery, "Terran Refinery", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 100, 0, 600, 0, 0, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 4, 2, 56, 32, 56, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 33, 2763, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
      fillUnitType(UnitTypeIDs::Terran_Barracks, "Terran Barracks", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Command_Center, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1000, 0, 0, 1, 150, 0, 1200, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 4, 3, 48, 40, 56, 32, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Academy, "Terran Academy", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Barracks, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 0, 0, 1, 150, 0, 1200, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 44, 24, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Factory, "Terran Factory", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Barracks, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1250, 0, 0, 1, 200, 100, 1200, 0, 0, 255, 0, 200, 600, UnitSizeTypeIDs::Large, 4, 3, 56, 40, 56, 40, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Starport, "Terran Starport", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Factory, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1300, 0, 0, 1, 150, 100, 1050, 0, 0, 255, 0, 200, 600, UnitSizeTypeIDs::Large, 4, 3, 48, 40, 48, 38, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Control_Tower, "Terran Control Tower", "", RaceIDs::Terran, UnitTypeIDs::Terran_Starport, 1, UnitTypeIDs::Terran_Starport, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 0, 0, 1, 50, 50, 600, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 2, 2, 47, 24, 28, 22, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Science_Facility, "Terran Science Facility", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Starport, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 850, 0, 0, 1, 100, 150, 900, 0, 0, 255, 0, 275, 825, UnitSizeTypeIDs::Large, 4, 3, 48, 38, 48, 38, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Covert_Ops, "Terran Covert Ops", "", RaceIDs::Terran, UnitTypeIDs::Terran_Science_Facility, 1, UnitTypeIDs::Terran_Science_Facility, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 50, 50, 600, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 47, 24, 28, 22, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Physics_Lab, "Terran Physics Lab", "", RaceIDs::Terran, UnitTypeIDs::Terran_Science_Facility, 1, UnitTypeIDs::Terran_Science_Facility, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 0, 0, 1, 50, 50, 600, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 47, 24, 28, 22, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Machine_Shop, "Terran Machine Shop", "", RaceIDs::Terran, UnitTypeIDs::Terran_Factory, 1, UnitTypeIDs::Terran_Factory, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 50, 50, 600, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 39, 24, 31, 24, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Engineering_Bay, "Terran Engineering Bay", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Command_Center, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 850, 0, 0, 1, 125, 0, 900, 0, 0, 255, 0, 65, 195, UnitSizeTypeIDs::Large, 4, 3, 48, 32, 48, 28, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Armory, "Terran Armory", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Factory, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 100, 50, 1200, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 3, 2, 48, 32, 47, 22, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Missile_Turret, "Terran Missile Turret", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Engineering_Bay, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 200, 0, 0, 0, 75, 0, 450, 0, 0, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 2, 2, 16, 32, 16, 16, 224, 352, WeaponTypeIDs::None, 0, WeaponTypeIDs::Longbolt_Missile, 1, 0, 0, 0, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Terran_Bunker, "Terran Bunker", "", RaceIDs::Terran, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_SCV, 1, UnitTypeIDs::Terran_Barracks, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 350, 0, 0, 1, 100, 0, 450, 0, 0, 255, 4, 50, 150, UnitSizeTypeIDs::Large, 3, 2, 32, 24, 32, 16, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 33, 2763, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Crashed_Norad_II, "Special Crashed Norad II", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 700, 0, 0, 1, 800, 600, 4800, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 3, 2, 48, 32, 47, 31, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Ion_Cannon, "Special Ion Cannon", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2000, 0, 0, 1, 200, 0, 900, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 3, 2, 48, 32, 47, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Infested_Command_Center, "Zerg Infested Command Center", "", RaceIDs::Zerg, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1500, 0, 0, 1, 1, 1, 1800, 0, 0, 255, 0, 300, 900, UnitSizeTypeIDs::Large, 4, 3, 58, 41, 58, 41, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 1, 33, 2763, 27, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Hatchery, "Zerg Hatchery", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1250, 0, 0, 1, 300, 0, 1800, 0, 2, 255, 0, 300, 900, UnitSizeTypeIDs::Large, 4, 3, 49, 32, 49, 32, 0, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Lair, "Zerg Lair", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Hatchery, 1, UnitTypeIDs::Zerg_Hatchery, 1, UnitTypeIDs::Zerg_Spawning_Pool, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1800, 0, 0, 1, 150, 100, 1500, 0, 2, 255, 0, 100, 1200, UnitSizeTypeIDs::Large, 4, 3, 49, 32, 49, 32, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Hive, "Zerg Hive", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Lair, 1, UnitTypeIDs::Zerg_Lair, 1, UnitTypeIDs::Zerg_Queens_Nest, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2500, 0, 0, 1, 200, 150, 1800, 0, 2, 255, 0, 100, 1500, UnitSizeTypeIDs::Large, 4, 3, 49, 32, 49, 32, 0, 352, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Nydus_Canal, "Zerg Nydus Canal", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Hive, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 250, 0, 0, 1, 150, 0, 600, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 2, 2, 32, 32, 31, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Hydralisk_Den, "Zerg Hydralisk Den", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Spawning_Pool, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 850, 0, 0, 1, 100, 50, 600, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 40, 24, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Defiler_Mound, "Zerg Defiler Mound", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Hive, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 850, 0, 0, 1, 100, 100, 900, 0, 0, 255, 0, 150, 450, UnitSizeTypeIDs::Large, 4, 2, 48, 32, 48, 4, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Greater_Spire, "Zerg Greater Spire", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Spire, 1, UnitTypeIDs::Zerg_Hive, 1, UnitTypeIDs::Zerg_Spire, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1000, 0, 0, 1, 100, 150, 1800, 0, 0, 255, 0, 200, 1350, UnitSizeTypeIDs::Large, 2, 2, 28, 32, 28, 24, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Queens_Nest, "Zerg Queen's Nest", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Lair, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 850, 0, 0, 1, 150, 100, 900, 0, 0, 255, 0, 175, 525, UnitSizeTypeIDs::Large, 3, 2, 38, 28, 32, 28, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Evolution_Chamber, "Zerg Evolution Chamber", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Hatchery, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 75, 0, 600, 0, 0, 255, 0, 40, 120, UnitSizeTypeIDs::Large, 3, 2, 44, 32, 32, 20, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Ultralisk_Cavern, "Zerg Ultralisk Cavern", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Hive, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 0, 0, 1, 150, 200, 1200, 0, 0, 255, 0, 275, 825, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 32, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Spire, "Zerg Spire", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Lair, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 0, 0, 1, 200, 150, 1800, 0, 0, 255, 0, 250, 750, UnitSizeTypeIDs::Large, 2, 2, 28, 32, 28, 24, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Spawning_Pool, "Zerg Spawning Pool", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Hatchery, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 200, 0, 1200, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 3, 2, 36, 28, 40, 18, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Creep_Colony, "Zerg Creep Colony", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 400, 0, 0, 0, 75, 0, 300, 0, 0, 255, 0, 40, 120, UnitSizeTypeIDs::Large, 2, 2, 24, 24, 23, 23, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Spore_Colony, "Zerg Spore Colony", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Creep_Colony, 1, UnitTypeIDs::Zerg_Evolution_Chamber, 1, UnitTypeIDs::Zerg_Creep_Colony, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 400, 0, 0, 0, 50, 0, 300, 0, 0, 255, 0, 25, 195, UnitSizeTypeIDs::Large, 2, 2, 24, 24, 23, 23, 224, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::Seeker_Spores, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Sunken_Colony, "Zerg Sunken Colony", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Creep_Colony, 1, UnitTypeIDs::Zerg_Spawning_Pool, 1, UnitTypeIDs::Zerg_Creep_Colony, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 300, 0, 0, 2, 50, 0, 300, 0, 0, 255, 0, 40, 240, UnitSizeTypeIDs::Large, 2, 2, 24, 24, 23, 23, 224, 320, WeaponTypeIDs::Subterranean_Tentacle, 1, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Overmind_With_Shell, "Special Overmind With Shell", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 5000, 0, 0, 1, 1, 1, 1, 0, 0, 255, 0, 0, 10000, UnitSizeTypeIDs::Large, 5, 3, 80, 32, 79, 40, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Overmind, "Special Overmind", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2500, 0, 0, 1, 1, 1, 1, 0, 0, 255, 0, 0, 10000, UnitSizeTypeIDs::Large, 5, 3, 80, 32, 79, 40, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Zerg_Extractor, "Zerg Extractor", "", RaceIDs::Zerg, UnitTypeIDs::Zerg_Drone, 1, UnitTypeIDs::Zerg_Drone, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 0, 0, 1, 50, 0, 600, 0, 0, 255, 0, 25, 75, UnitSizeTypeIDs::Large, 4, 2, 64, 32, 63, 31, 0, 224, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
      fillUnitType(UnitTypeIDs::Special_Mature_Chrysalis, "Special Mature Chrysalis", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 250, 0, 0, 1, 0, 0, 0, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 2, 2, 32, 32, 31, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Cerebrate, "Special Cerebrate", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1500, 0, 0, 1, 0, 0, 0, 0, 0, 255, 0, 0, 2500, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 32, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Cerebrate_Daggoth, "Special Cerebrate Daggoth", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1500, 0, 0, 1, 0, 0, 0, 0, 0, 255, 0, 0, 2500, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 32, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Nexus, "Protoss Nexus", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 750, 750, 0, 1, 400, 0, 1800, 0, 18, 255, 0, 400, 1200, UnitSizeTypeIDs::Large, 4, 3, 56, 39, 56, 39, 0, 352, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Robotics_Facility, "Protoss Robotics Facility", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Cybernetics_Core, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 200, 200, 1200, 0, 0, 255, 0, 300, 900, UnitSizeTypeIDs::Large, 3, 2, 36, 16, 40, 20, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Pylon, "Protoss Pylon", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 300, 300, 0, 0, 100, 0, 450, 0, 16, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 2, 2, 16, 12, 16, 20, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Assimilator, "Protoss Assimilator", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 450, 450, 0, 1, 100, 0, 600, 0, 0, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 4, 2, 48, 32, 48, 24, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
      fillUnitType(UnitTypeIDs::Protoss_Observatory, "Protoss Observatory", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Robotics_Facility, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 250, 250, 0, 1, 50, 100, 450, 0, 0, 255, 0, 175, 525, UnitSizeTypeIDs::Large, 3, 2, 44, 16, 44, 28, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Gateway, "Protoss Gateway", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Nexus, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 150, 0, 900, 0, 0, 255, 0, 75, 225, UnitSizeTypeIDs::Large, 4, 3, 48, 32, 48, 40, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Photon_Cannon, "Protoss Photon Cannon", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Forge, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 100, 100, 0, 0, 150, 0, 750, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 2, 2, 20, 16, 20, 16, 224, 352, WeaponTypeIDs::STS_Photon_Cannon, 1, WeaponTypeIDs::STA_Photon_Cannon, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Citadel_of_Adun, "Protoss Citadel of Adun", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Cybernetics_Core, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 450, 450, 0, 1, 150, 100, 900, 0, 0, 255, 0, 200, 600, UnitSizeTypeIDs::Large, 3, 2, 24, 24, 40, 24, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Cybernetics_Core, "Protoss Cybernetics Core", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Gateway, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 200, 0, 900, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 3, 2, 40, 24, 40, 24, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Templar_Archives, "Protoss Templar Archives", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Citadel_of_Adun, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 150, 200, 900, 0, 0, 255, 0, 250, 750, UnitSizeTypeIDs::Large, 3, 2, 32, 24, 32, 24, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Forge, "Protoss Forge", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Nexus, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 550, 550, 0, 1, 150, 0, 600, 0, 0, 255, 0, 100, 300, UnitSizeTypeIDs::Large, 3, 2, 36, 24, 36, 20, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Stargate, "Protoss Stargate", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Cybernetics_Core, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 600, 600, 0, 1, 150, 150, 1050, 0, 0, 255, 0, 300, 900, UnitSizeTypeIDs::Large, 4, 3, 48, 40, 48, 32, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Stasis_Cell_Prison, "Special Stasis Cell Prison", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2000, 0, 0, 1, 150, 0, 1, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 4, 3, 64, 48, 63, 47, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Fleet_Beacon, "Protoss Fleet Beacon", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Stargate, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 300, 200, 900, 0, 0, 255, 0, 350, 1050, UnitSizeTypeIDs::Large, 3, 2, 40, 32, 47, 24, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Arbiter_Tribunal, "Protoss Arbiter Tribunal", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Templar_Archives, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 500, 500, 0, 1, 200, 150, 900, 0, 0, 255, 0, 450, 1350, UnitSizeTypeIDs::Large, 3, 2, 44, 28, 44, 28, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Robotics_Support_Bay, "Protoss Robotics Support Bay", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Robotics_Facility, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 450, 450, 0, 1, 150, 100, 450, 0, 0, 255, 0, 125, 375, UnitSizeTypeIDs::Large, 3, 2, 32, 32, 32, 20, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Protoss_Shield_Battery, "Protoss Shield Battery", "", RaceIDs::Protoss, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Probe, 1, UnitTypeIDs::Protoss_Gateway, 1, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 200, 200, 200, 1, 100, 0, 450, 0, 0, 255, 0, 50, 150, UnitSizeTypeIDs::Large, 3, 2, 32, 16, 32, 16, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Khaydarin_Crystal_Form, "Special Khaydarin Crystal Form", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 100000, 0, 0, 1, 250, 0, 1, 0, 0, 255, 0, 0, 2500, UnitSizeTypeIDs::Large, 4, 3, 64, 48, 63, 47, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Protoss_Temple, "Special Protoss Temple", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 1500, 0, 0, 1, 250, 0, 1, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 7, 3, 112, 48, 111, 47, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_XelNaga_Temple, "Special XelNaga Temple", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 5000, 0, 0, 1, 1500, 500, 4800, 0, 0, 255, 0, 0, 5000, UnitSizeTypeIDs::Large, 5, 4, 80, 34, 79, 63, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Resource_Mineral_Field, "Resource Mineral Field", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 100000, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 10, 10, UnitSizeTypeIDs::Independent, 2, 1, 32, 16, 31, 15, 0, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Resource_Vespene_Geyser, "Resource Vespene Geyser", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 100000, 0, 0, 0, 1, 1, 1, 0, 0, 255, 0, 10, 10, UnitSizeTypeIDs::Independent, 4, 2, 64, 32, 63, 31, 0, 288, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::Special_Warp_Gate, "Special Warp Gate", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 700, 0, 0, 1, 600, 200, 2400, 0, 0, 255, 0, 0, 2000, UnitSizeTypeIDs::Large, 3, 2, 48, 32, 47, 31, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Psi_Disrupter, "Special Psi Disrupter", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2000, 0, 0, 1, 1000, 400, 4800, 0, 0, 255, 0, 0, 3600, UnitSizeTypeIDs::Large, 5, 3, 80, 38, 69, 47, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Power_Generator, "Special Power Generator", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 800, 0, 0, 1, 200, 50, 2400, 0, 0, 255, 0, 0, 600, UnitSizeTypeIDs::Large, 4, 3, 56, 28, 63, 43, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Special_Overmind_Cocoon, "Special Overmind Cocoon", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 2500, 0, 0, 1, 1000, 500, 2400, 0, 0, 255, 0, 0, 4000, UnitSizeTypeIDs::Large, 3, 2, 48, 32, 47, 31, 0, 320, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0);
      fillUnitType(UnitTypeIDs::Spell_Dark_Swarm, "Spell Dark Swarm", "", RaceIDs::Zerg, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 800, 0, 0, 0, 250, 200, 2400, 0, 0, 255, 0, 0, 0, UnitSizeTypeIDs::Independent, 5, 5, 80, 80, 79, 79, 0, 256, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);
      fillUnitType(UnitTypeIDs::None, "None", "", RaceIDs::None, UnitTypeIDs::None, 0, NULL, 0, NULL, 0, NULL, 0, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, TechTypeIDs::None, UpgradeTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, UnitSizeTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, WeaponTypeIDs::None, 0, WeaponTypeIDs::None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

      for (std::set<UpgradeTypeID>::iterator i=upgradeTypeSet.begin();i!=upgradeTypeSet.end();i++)
      {
        for each (UnitTypeID ut in upgradeTypeData[*i].whatUses)
        {
          unitTypeData[ut].upgrades.insert(*i);
        }
      }

      unitTypeSet.insert(UnitTypeIDs::Terran_Marine);
      unitTypeSet.insert(UnitTypeIDs::Terran_Ghost);
      unitTypeSet.insert(UnitTypeIDs::Terran_Vulture);
      unitTypeSet.insert(UnitTypeIDs::Terran_Goliath);
      unitTypeSet.insert(UnitTypeIDs::Terran_Siege_Tank_Tank_Mode);
      unitTypeSet.insert(UnitTypeIDs::Terran_SCV);
      unitTypeSet.insert(UnitTypeIDs::Terran_Wraith);
      unitTypeSet.insert(UnitTypeIDs::Terran_Science_Vessel);
      unitTypeSet.insert(UnitTypeIDs::Terran_Dropship);
      unitTypeSet.insert(UnitTypeIDs::Terran_Battlecruiser);
      unitTypeSet.insert(UnitTypeIDs::Terran_Vulture_Spider_Mine);
      unitTypeSet.insert(UnitTypeIDs::Terran_Nuclear_Missile);
      unitTypeSet.insert(UnitTypeIDs::Terran_Siege_Tank_Siege_Mode);
      unitTypeSet.insert(UnitTypeIDs::Terran_Firebat);
      unitTypeSet.insert(UnitTypeIDs::Spell_Scanner_Sweep);
      unitTypeSet.insert(UnitTypeIDs::Terran_Medic);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Larva);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Egg);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Zergling);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Hydralisk);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Ultralisk);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Broodling);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Drone);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Overlord);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Mutalisk);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Guardian);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Queen);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Defiler);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Scourge);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Infested_Terran);
      unitTypeSet.insert(UnitTypeIDs::Terran_Valkyrie);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Cocoon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Corsair);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Dark_Templar);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Devourer);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Dark_Archon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Probe);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Zealot);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Dragoon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_High_Templar);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Archon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Shuttle);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Scout);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Arbiter);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Carrier);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Interceptor);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Reaver);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Observer);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Scarab);
      unitTypeSet.insert(UnitTypeIDs::Critter_Rhynadon);
      unitTypeSet.insert(UnitTypeIDs::Critter_Bengalaas);
      unitTypeSet.insert(UnitTypeIDs::Critter_Scantid);
      unitTypeSet.insert(UnitTypeIDs::Critter_Kakaru);
      unitTypeSet.insert(UnitTypeIDs::Critter_Ragnasaur);
      unitTypeSet.insert(UnitTypeIDs::Critter_Ursadon);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Lurker_Egg);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Lurker);
      unitTypeSet.insert(UnitTypeIDs::Spell_Disruption_Web);
      unitTypeSet.insert(UnitTypeIDs::Terran_Command_Center);
      unitTypeSet.insert(UnitTypeIDs::Terran_Comsat_Station);
      unitTypeSet.insert(UnitTypeIDs::Terran_Nuclear_Silo);
      unitTypeSet.insert(UnitTypeIDs::Terran_Supply_Depot);
      unitTypeSet.insert(UnitTypeIDs::Terran_Refinery);
      unitTypeSet.insert(UnitTypeIDs::Terran_Barracks);
      unitTypeSet.insert(UnitTypeIDs::Terran_Academy);
      unitTypeSet.insert(UnitTypeIDs::Terran_Factory);
      unitTypeSet.insert(UnitTypeIDs::Terran_Starport);
      unitTypeSet.insert(UnitTypeIDs::Terran_Control_Tower);
      unitTypeSet.insert(UnitTypeIDs::Terran_Science_Facility);
      unitTypeSet.insert(UnitTypeIDs::Terran_Covert_Ops);
      unitTypeSet.insert(UnitTypeIDs::Terran_Physics_Lab);
      unitTypeSet.insert(UnitTypeIDs::Terran_Machine_Shop);
      unitTypeSet.insert(UnitTypeIDs::Terran_Engineering_Bay);
      unitTypeSet.insert(UnitTypeIDs::Terran_Armory);
      unitTypeSet.insert(UnitTypeIDs::Terran_Missile_Turret);
      unitTypeSet.insert(UnitTypeIDs::Terran_Bunker);
      unitTypeSet.insert(UnitTypeIDs::Special_Crashed_Norad_II);
      unitTypeSet.insert(UnitTypeIDs::Special_Ion_Cannon);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Infested_Command_Center);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Hatchery);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Lair);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Hive);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Nydus_Canal);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Hydralisk_Den);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Defiler_Mound);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Greater_Spire);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Queens_Nest);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Evolution_Chamber);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Ultralisk_Cavern);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Spire);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Spawning_Pool);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Creep_Colony);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Spore_Colony);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Sunken_Colony);
      unitTypeSet.insert(UnitTypeIDs::Special_Overmind_With_Shell);
      unitTypeSet.insert(UnitTypeIDs::Special_Overmind);
      unitTypeSet.insert(UnitTypeIDs::Zerg_Extractor);
      unitTypeSet.insert(UnitTypeIDs::Special_Mature_Chrysalis);
      unitTypeSet.insert(UnitTypeIDs::Special_Cerebrate);
      unitTypeSet.insert(UnitTypeIDs::Special_Cerebrate_Daggoth);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Nexus);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Robotics_Facility);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Pylon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Assimilator);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Observatory);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Gateway);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Photon_Cannon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Citadel_of_Adun);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Cybernetics_Core);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Templar_Archives);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Forge);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Stargate);
      unitTypeSet.insert(UnitTypeIDs::Special_Stasis_Cell_Prison);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Fleet_Beacon);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Arbiter_Tribunal);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Robotics_Support_Bay);
      unitTypeSet.insert(UnitTypeIDs::Protoss_Shield_Battery);
      unitTypeSet.insert(UnitTypeIDs::Special_Khaydarin_Crystal_Form);
      unitTypeSet.insert(UnitTypeIDs::Special_Protoss_Temple);
      unitTypeSet.insert(UnitTypeIDs::Special_XelNaga_Temple);
      unitTypeSet.insert(UnitTypeIDs::Resource_Mineral_Field);
      unitTypeSet.insert(UnitTypeIDs::Resource_Vespene_Geyser);
      unitTypeSet.insert(UnitTypeIDs::Special_Warp_Gate);
      unitTypeSet.insert(UnitTypeIDs::Special_Psi_Disrupter);
      unitTypeSet.insert(UnitTypeIDs::Special_Power_Generator);
      unitTypeSet.insert(UnitTypeIDs::Special_Overmind_Cocoon);
      unitTypeSet.insert(UnitTypeIDs::Spell_Dark_Swarm);
      unitTypeSet.insert(UnitTypeIDs::None);

      for(std::set<UnitTypeID>::iterator i = unitTypeSet.begin(); i != unitTypeSet.end(); i++)
      {
        unitTypeMap.insert(std::make_pair(std::string(unitTypeData[*i].name), *i));
      }
    }
  }
  namespace UnitTypes
  {
    UnitTypeID getIDByName(std::string& name)
    {
      std::map<std::string, UnitTypeID>::iterator i = unitTypeMap.find(name);
      if (i == unitTypeMap.end()) return UnitTypeIDs::None;
      return (*i).second;
    }
  }
}
